package com.pet.system.service;

import com.pet.common.model.PageModel;
import com.pet.system.domain.entity.SysUser;
import com.pet.system.domain.vo.SysUserVO;

import java.io.Serializable;
import java.util.List;
import java.util.Map;

/** @author Centaurea */
public interface ISysUserService {
  /**
   * 查询-分页
   *
   * @param page
   * @param params
   * @return
   */
  PageModel<SysUser> query(PageModel<SysUser> page, Map<String, Object> params);

  /**
   * 保存 用户信息
   *
   * @param userDto
   * @return
   */
  SysUser save(SysUserVO userDto);

  /**
   * 修改用户信息(此方法 不修改 username、password、salt)
   *
   * @param userDto
   * @return
   */
  SysUser update(SysUserVO userDto);

  /**
   * 状态变更
   *
   * @param id
   * @param status
   * @return
   */
  boolean updateStatus(Integer id, int status);

  /**
   * 删除用户
   *
   * @param username
   * @return
   */
  boolean delete(String username);

  /**
   * 批量删除用户
   *
   * @param ids
   * @return
   */
  boolean batchDelete(List<Integer> ids);

  /**
   * 根据用户名获取用户信息
   *
   * @param username
   * @return
   */
  SysUser getByUserName(String username);

  SysUser get(Serializable id);

  /**
   * 密码加权处理
   *
   * @param credentials
   * @param salt
   * @return
   */
  String passwordEncoder(String credentials, String salt);

  /**
   * 密码修改
   *
   * @param username
   * @param oldPassword
   * @param newPassword
   */
  void changePassword(String username, String oldPassword, String newPassword);

  /**
   * 重置密码
   *
   * @param username
   * @param newPassword
   */
  void resetPassword(String username, String newPassword);
}
